Smooth infinitesimal analysis